package com.zenithmind.version.pojo.query;

import com.zenithmind.common.query.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 文件版本查询DTO
 *
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "文件版本查询DTO")
public class FileVersionQueryDTO extends BaseQuery {

    /**
     * 关键词
     */
    @Schema(description = "关键词")
    private String keyword;

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 提交ID
     */
    @Schema(description = "提交ID")
    private String commitId;

    /**
     * 分支名称
     */
    @Schema(description = "分支名称")
    private String branchName;

    /**
     * 文件路径
     */
    @Schema(description = "文件路径")
    private String filePath;

    /**
     * 文件名称
     */
    @Schema(description = "文件名称")
    private String fileName;

    /**
     * 文件类型
     */
    @Schema(description = "文件类型")
    private String fileType;

    /**
     * 变更类型
     */
    @Schema(description = "变更类型")
    private String changeType;

    /**
     * 是否为二进制文件
     */
    @Schema(description = "是否为二进制文件")
    private Boolean isBinary;

    /**
     * 最小文件大小
     */
    @Schema(description = "最小文件大小")
    private Long minFileSize;

    /**
     * 最大文件大小
     */
    @Schema(description = "最大文件大小")
    private Long maxFileSize;

    /**
     * 是否包含已删除
     */
    @Schema(description = "是否包含已删除")
    private Boolean includeDeleted;

    /**
     * 排序字段
     */
    @Schema(description = "排序字段")
    private String sortField;

    /**
     * 排序方向
     */
    @Schema(description = "排序方向")
    private String sortDirection;

    /**
     * 开始时间
     */
    @Schema(description = "开始时间")
    private String startTime;

    /**
     * 结束时间
     */
    @Schema(description = "结束时间")
    private String endTime;
}
